package demo2;

public class Test2 {
    public static void main(String[] args) {
//        I1 test = new I1() {
//            @Override
//            public void func() {
//                System.out.println("test");
//            }
//        };
//        test.func();
//        I1 test2 = ()-> System.out.println("test");
//        test2.func();
//        I3 test = (int x , int y) -> System.out.println(x +" "+y);
//         test.func(8 , 4);

//        I4 test = ()-> 9;
//        int a = test.func();
//        System.out.println(a);
//        I6 test = (int a , int b ) -> a+b ;
//        I6 test2 = (int a , int b ) ->{
//            System.out.println(a+b);
//            return  a-b ;
//        };
//       int a =  test.func(1 ,2) ;
//       int b = test2.func(1 , 1) ;

//        int val = 0 ;
//        I2 test = new I2() {
//            @Override
//            public void func(int a) {
//                System.out.println(val);
//                val = 1 ;
//                System.out.println(a);
//            }
//        };
//      val = 3 ;
        int val = 0 ;
        I1 test = ()->{
            System.out.println(val);   //不修改值，可以使用
            val = 1 ;   //报错
        };
       val = 2 ;     //报错
    }
}
//没有参数，没有返回值
@FunctionalInterface
interface I1{
    void func() ;
}
//有参数，没有返回值
@FunctionalInterface
interface I2{
    void func(int a) ;
}
//有两个参数，没有返回值
@FunctionalInterface
interface I3{
    void func(int a , int b) ;
}
//没有参数，有返回值
@FunctionalInterface
interface I4{
    int func() ;
}
//有一个参数，有返回值
@FunctionalInterface
interface I5{
    int func(int a) ;
}
//有两个参数，有返回值
@FunctionalInterface
interface I6{
    int func(int a  ,int b) ;
}

